const followService = require('../service/follow.service');

class FollowController {

  // 关注一个用户
  async create(ctx, next) {
    // 1.获取参数
    const {friendId, nickname} = ctx.request.body;
    const {id} = ctx.user;
    // 2.操作数据库
    const result = await followService.create(id, friendId, nickname);
    // 3.返回结果
    ctx.body = result;
  }

  // 取消关注一个用户
  async remove(ctx, next) {
    // 1.获取参数
    const {friendId} = ctx.request.body;
    const {id} = ctx.user;
    // 2.操作数据库
    const result = await followService.remove(id, friendId);
    // 3.返回结果
    ctx.body = result;
  }

  // 我的关注列表
  async miniList(ctx, next) {
    // 1.获取参数
    const {userId} = ctx.query;
    // 2.操作数据库
    const result = await followService.miniList(userId);
    // 3.返回结果
    ctx.body = result;
  }

  // 关注我的列表
  async otherList(ctx, next) {
    // 1.获取参数
    const {userId} = ctx.query;
    // 2.操作数据库
    const result = await followService.otherList(userId);
    // 3.返回结果
    ctx.body = result;
  }

  // 搜索我关注的用户
  async searchMineList(ctx, next) {
    // 1.获取参数
    const {userId, friendName} = ctx.query;
    // 2.操作数据库
    const result = await followService.searchMineList(userId, friendName);
    // 3.返回结果
    ctx.body = result;
  }

  // 搜索关注我的用户
  async searchOtherList(ctx, next) {
    // 1.获取参数
    const {userId, friendName} = ctx.query;
    // 2.操作数据库
    const result = await followService.searchOtherList(userId, friendName);
    // 3.返回结果
    ctx.body = result;
  }

  // 判断是否关注用户
  async judge(ctx, next) {
    // 1.获取参数
    const {friendId} = ctx.query;
    const {id} = ctx.user;
    // 2.操作数据库
    const result = await followService.judge(id, friendId);
    // 3.返回结果
    ctx.body = result;
  }

}

module.exports = new FollowController();
